home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / emodules / crunchmania / crmdir.e < prev    next >
Text File  |  1980-07-16  |  3KB  |  118 lines

  1. OPT OSVERSION=37
  2. OPT PREPROCESS
  3.  
  4. /*
  5. *-- AutoRev header do NOT edit!
  6. *
  7. *   Project         :   Test program for CrM.library
  8. *   File            :   crmdir.e
  9. *   Copyright       :   © Piotr Gapisnki
  10. *   Author          :   Piotr Gapinski
  11. *   Creation Date   :   15.12.95
  12. *   Current version :   1.1
  13. *   Translator      :   AmigaE v3.1+
  14. *
  15. *   REVISION HISTORY
  16. *
  17. *   Date          Version         Comment
  18. *   ---------     -------         ------------------------------------------
  19. *   15.12.95      1.1             first release
  20. *
  21. *-- REV_END --*
  22. */
  23.  
  24. /*
  25.  This is just an example program of how to use the CrM.library
  26.  from AmigaE.
  27.  All it does is scan selected directory & report crunched files
  28.  (crm crunched :)
  29.  based on DirQuick.e form AmigaE package
  30. */
  31.  
  32. MODULE 'dos/dos','dos/dosextens',
  33.        'libraries/crm','crm',
  34.        'utility/tagitem'
  35.  
  36. #define PROGRAMVERSION '$VER: CrMDir 1.1 (15.12.95)'
  37.  
  38. ENUM ERR_OK,ERR_ARGS,ERR_LOCK,ERR_NODIR,ERR_NOLIB,
  39.      ERR_NOFILE,ERR_READ
  40. ENUM ARG_DIR,ARG_SHOWCRUNCHED,NUMARGS
  41.  
  42. PROC main() HANDLE
  43.   DEF rdargs=0,args[NUMARGS]:LIST,templ,
  44.       info:fileinfoblock,lock=0,olddir=0,hide
  45.  
  46.   templ:='DIR,HIDECRUNCHED/S,PROCESS/S'
  47.   IF (rdargs:=ReadArgs(templ,args,NIL))=NIL THEN Raise(ERR_ARGS)
  48.  
  49.   hide:=IF args[ARG_SHOWCRUNCHED] THEN TRUE ELSE FALSE
  50.   IF (crmbase:=OpenLibrary(CRMNAME,CRMVERSION))=NIL THEN Raise(ERR_NOLIB)
  51.  
  52.   IF (lock:=Lock(args[ARG_DIR],ACCESS_READ))=NIL THEN Raise(ERR_LOCK)
  53.   olddir:=CurrentDir(lock)
  54.   IF Examine(lock,info)
  55.     IF info.direntrytype=0 THEN Raise(ERR_NODIR)
  56.     WriteF('DIRECTORY OF: \s\n\n',info.filename)
  57.     WriteF(' \l\s[20] \r\s[6]\r\s[7]\n',
  58.     '--- name ---','-size-','-orig-')
  59.     WHILE ExNext(lock,info)
  60.       IF info.direntrytype>0
  61.         WriteF('\e[1;32m\l\s[25]\e[0;31m\n',info.filename)
  62.       ELSE
  63.         operate(info,hide)
  64.       ENDIF
  65.     ENDWHILE
  66.   ENDIF
  67. EXCEPT DO
  68.   IF olddir THEN CurrentDir(olddir)
  69.   IF lock THEN UnLock(lock)
  70.   IF rdargs THEN FreeArgs(rdargs)
  71.   IF crmbase<>NIL THEN CloseLibrary(crmbase)
  72.   IF exception
  73.     SELECT exception
  74.     CASE ERR_ARGS
  75.       WriteF('Bad args! (try "CrMDir ?")\n')
  76.     CASE ERR_LOCK
  77.       WriteF('What?!?\n')
  78.     CASE ERR_NODIR
  79.       WriteF('No directory! (try "CrMDir ?")\n')
  80.     CASE ERR_NOLIB
  81.       WriteF('Couldnt open crm.library!\n')
  82.     CASE ERR_NOFILE
  83.       WriteF('Error, found corruped file!\n')
  84.     CASE ERR_READ
  85.       WriteF('Error while reading!\n')
  86.     ENDSELECT
  87.   ENDIF
  88. ENDPROC
  89.  
  90. PROC operate(info:PTR TO fileinfoblock,hide) HANDLE
  91.   DEF handle=0,res=0,
  92.       data=NIL:PTR TO dataheader,datasize
  93.  
  94.   IF (handle:=Open(info.filename,MODE_OLDFILE))=NIL THEN Raise(ERR_NOFILE)
  95.   IF info.size>0
  96.     NEW data
  97.     datasize:=SIZEOF dataheader
  98.     IF (Read(handle,data,datasize))<>datasize THEN Raise(ERR_READ)
  99.     res:=CmCheckCrunched(data)
  100.   ENDIF
  101.   IF res=0
  102.     WriteF('\l\s[20] \r\d[7]\n',info.filename,info.size)  ;-> NOT crunched
  103.   ELSEIF hide=FALSE
  104.     WriteF('\e[1;31m\l\s[20] \r\d[7]\r\d[7]\e[0;31m\n',
  105.            info.filename,info.size,data.originallen)
  106.   ENDIF
  107. EXCEPT DO
  108.   Close(handle)
  109.   IF data THEN END data
  110.   ReThrow()
  111. ENDPROC
  112.  
  113. CHAR PROGRAMVERSION,0
  114. /*EE folds
  115. -1
  116. 90 20 
  117. EE folds*/
  118.